CLASS class_name "description" SPECIALISES spec_type_or_class_name := [object_assignment];
"class_name" is the name of the class
"description" is a string expression
"spec_type_or_class_name" is the name of the class or type used to specialize from
"object_assignment" is the assignment of the objects in the class
A class that is specialized from another class (or type) has the same signature, but the objects in the class are assigned (replaced) as specified in "object_assignment". This can be done recursively: the object in a class can itself consist of other objects.
Example:
TYPE PhysicalQuantityType "The type of any physical quantity" =
RECORD
{
Quantity : QuantityType;
Unit : UnitType;
};
CLASS Length "A class for length"
SPECIALISES PhysicalQuantityType :=
{:
Quantity <- "Length";
Unit <- "m";
:};